<script type="text/javascript">
	/**
	 * 注册企通数易通 - YonSuite2U8节点
	 * 注意：节点类型名称必须与JS文件中注册的名称一致
	 */
	RED.nodes.registerType('cotong-ys2u8-login', {

		category: '企通数易通', // 节点分类
		color: '#44C0ED',       // 节点颜色
		defaults: {
			name: { value: "" },                 // 节点名称（默认空）
			dbcategory: { value: "mysql", required: true }, // 数据库类型（必填）
			dbport: { value: 3306, required: true },        // 数据库端口（必填）
			dbhost: { value: "127.0.0.1", required: true }, // 数据库主机（必填）
			dbuser: { value: "root", required: true },      // 数据库用户名（必填）
			dbpassword: { value: "", required: true },      // 数据库密码（必填）
			database: { value: "", required: true },        // 数据库名称（必填）
			ysapiurl: { value: "", required: true },        // YonSuite API URL（必填）
			ysappkey: { value: "", required: true },        // YonSuite API App Key（必填）
			ysappsecret: { value: "", required: true },     // YonSuite API App Secret（必填）
			query: { value: "", required: false }           // SQL查询语句（可选）
		},
		inputs: 1,              // 输入端口数量
		outputs: 1,             // 输出端口数量
		icon: "font-awesome/fa-cogs", // 节点图标
		paletteLabel: "YonSuite2U8",  // 调色板中显示的名称
		label: function () {    // 节点标签显示逻辑
			return this.name || "YonSuite2U8";
		},
		/**
		 * 编辑准备钩子函数
		 * 当用户双击节点打开编辑面板时触发
		 */
		oneditprepare: function () {
			console.warn("oneditprepare 被调用", this.query);
			// 初始化 SQL 查询控件
			this.editor = RED.editor.createEditor({
				id: 'node-input-query-editor',
				mode: 'ace/mode/sql',
				value: $("#node-input-query").val()
			});
			// 初始化数据库类型选择控件
			$("#node-input-dbcategory").typedInput({
				types: [
					{
						value: "mysql",
						options: [
							{ value: "mysql", label: "MySQL" },
							{ value: "mssql", label: "Microsoft SQL Server" },
							{ value: "orcale", label: "Orcale DB" },
						]
					}
				]
			});
		},
		oneditsave: function () {
			// 保存 SQL 查询语句到 config.query 属性（这里是指node-input-query的隐藏域控件，在NODERED中则会自动成为 config.query 属性）
			// 其他 config 的属性, NODERED 会自动保存到相关的控件中（命名规则: node-input-<属性名>）
			$("#node-input-query").val(this.editor.getValue()); // 特殊处理非控件模式的编辑器（如ace编辑器）
			this.editor.destroy();
			delete this.editor;
		},
		oneditcancel: function () {
			this.editor.destroy();
			delete this.editor;
		},
	});
</script>

<!--
 * 节点编辑模板
 * data-template-name 必须与JS文件中注册的节点类型名称一致
 * 该模板定义了节点的编辑表单界面
-->
<script type="text/html" data-template-name="cotong-ys2u8-login">
		<div class="form-container">
			<!-- 节点名称输入 -->
			<div class="form-row">
				<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
				<input type="text" id="node-input-name" placeholder="Name">
			</div>
			
			<p></p>
			
			<!-- 数据库配置区域 -->
			<div style="border: 1px solid #c0c0c0; padding: 5px; background-color:#f0f0f0;">
				<p>用友 U8 数据库配置</p>
				
				<!-- 数据库类型 -->
				<div class="form-row">
					<label for="node-input-dbcategory"><i class="fa fa-list-ul"></i> DB Category</label>
					<input type="text" id="node-input-dbcategory">
				</div>
				
				<!-- 数据库主机 -->
				<div class="form-row">
					<label for="node-input-dbhost"><i class="fa fa-server"></i> Host</label>
					<input type="text" id="node-input-dbhost" placeholder="Host" value="127.0.0.1">
				</div>
				
				<!-- 数据库端口 -->
				<div class="form-row">
					<label for="node-input-dbport"><i class="fa fa-code-fork"></i> Port</label>
					<input type="text" id="node-input-dbport" placeholder="Port" value="3306">
				</div>
				
				<!-- 数据库用户名 -->
				<div class="form-row">
					<label for="node-input-dbuser"><i class="fa fa-id-card-o"></i> User</label>
					<input type="text" id="node-input-dbuser" placeholder="User" value="root">
				</div>
				
				<!-- 数据库密码 -->
				<div class="form-row">
					<label for="node-input-dbpassword"><i class="fa fa-user-secret"></i> Password</label>
					<input type="password" id="node-input-dbpassword" placeholder="Password">
				</div>
				
				<!-- 数据库名称 -->
				<div class="form-row">
					<label for="node-input-database"><i class="fa fa-database"></i> Database</label>
					<input type="text" id="node-input-database" placeholder="Database">
				</div>
				
				<!-- SQL查询语句 -->
				<div class="form-row">
					<label for="node-input-query-editor"><i class="fa fa-code"></i> Query</label>
					<div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-input-query-editor"></div>
					<textarea type="text" id="node-input-query" style="display:none;"></textarea>
				</div>
			</div>
			
			<p></p>
			
			<!-- YonSuite API配置区域 -->
			<div style="border: 1px solid #c0c0c0; padding: 5px; background-color:#f0f0f0;">
				<p>用友 YonSuite API 配置</p>
				
				<!-- API URL -->
				<div class="form-row">
					<label for="node-input-ysapiurl"><i class="fa fa-link"></i> URL</label>
					<input type="text" id="node-input-ysapiurl" placeholder="YonSuite API URL" value="https://">
				</div>
				
				<!-- App Key -->
				<div class="form-row">
					<label for="node-input-ysappkey"><i class="fa fa-key"></i> App Key</label>
					<input type="text" id="node-input-ysappkey" placeholder="YonSuite API App Key" value="">
				</div>
				
				<!-- App Secret -->
				<div class="form-row">
					<label for="node-input-ysappsecret"><i class="fa fa-lock"></i> App Secret</label>
					<input type="text" id="node-input-ysappsecret" placeholder="YonSuite API App Secret" value="">
				</div>		
			</div>
			
			<p> </p>
			
			<!-- 公司LOGO和版权信息 -->
			<p style="text-align: center;"><img src="resources/node-cotong-ys2u8-login/cotong_logo.svg" width="30%" /></p>
			<p style="text-align: center;"> © 2025 上海企通数字科技有限公司</p>
		</div>
</script>

<!--
 * 节点帮助文档
 * data-help-name 必须与JS文件中注册的节点类型名称一致
 * 该部分提供节点的使用说明和帮助信息
-->
<!--
 * 节点帮助文档
 * data-help-name 必须与JS文件中注册的节点类型名称一致
 * 该部分提供节点的使用说明和帮助信息
-->
<script type="text/markdown" data-help-name="cotong-ys2u8-login">
### 企通数易通 - YonSuite2U8

该节点用于调用用友 YonSuite API 返回访问令牌，以便后续的业务操作
### 详细
#### 节点功能

1. 调用用友 YonSuite API 获取访问令牌
2. 连接 U8 数据库（支持 `MySQL`、`Microsoft SQL Server`、`Oracle` ）
3. 执行 SQL 查询语句
4. 返回 SQL 查询结果和操作状态

#### 输入参数
`config` 格式为：
```javascript
{
	// 节点名称（默认空）
	name: { value: "" },  
	// 数据库类型（必填）                              
	dbcategory: ”mysql",
	// 数据库端口（必填）     
	dbport: 1433, 
	// 数据库主机（必填）       
	dbhost: "127.0.0.1", 
	// 数据库用户名（必填）
	dbuser: "root"            
	// 数据库密码（必填）
	dbpassword: "",            
	// 数据库名称（必填）
	database: "",            
	// YonSuite API URL（必填）
	ysapiurl: "https://",  
	// YonSuite API App Key（必填）
	ysappkey: "",        
	// YonSuite API App Secret（必填）
	ysappsecret: "",     
	// SQL查询语句（可选）
	query: ""           
}
```
**注意:** 当 `query` 为空时，使用 `msg.query` 作为 SQL 查询语句。

#### 输出格式

`payload` 格式为：

```javascript
{
	output: 'success',          // 操作状态：'success' 或 'error'
	results: results,          	// 查询结果集（成功时，不同数据库结果不同）
	config: node-config,      	// 节点配置信息
	error: NaN,               	// 错误信息（失败时）
	yonsuite_access_token: "" 	// YonSuite 访问令牌（成功时）
	signature: signature,		// 签名
}
```

#### 注意事项

- 目前仅支持查询操作，不支持插入、更新和删除操作
- 数据库连接信息需正确配置，否则会导致连接失败
- YonSuite API 配置需正确填写，以确保能够成功获取访问令牌
- 查询语句需符合所选数据库的语法规范

### 版权信息

<p style="text-align: center;"><img src='resources/node-cotong-ys2u8-login/cotong_logo.svg' width='30%' /></p>
<p style="text-align: center;"> © 2025 上海企通数字科技有限公司</p> 

</script>

<!-- 
	<h4>企通数易通 - YonSuite2U8 </h4>
	<p>该节点用于调用用友 YonSuite API 返回访问令牌，以便后续的业务操作</p>
	<h5>节点功能：</h5>
	<ol>
		<li>调用用友 YonSuite API 获取访问令牌</li>
		<li>连接 U8 数据库（支持MySQL、SQL Server、Oracle等）</li>
		<li>执行 SQL 查询语句</li>
		<li>返回查询结果和操作状态</li>
	</ol>
	<h5>输入参数：</h5>
	<ul>
		<li><strong>msg.query</strong> (可选): 要执行的SQL查询语句，如果提供则覆盖节点配置中的查询语句</li>
	</ul>
	<h5>输出格式：</h5>
	<pre>
msg.payload = {
	output: 'success',          // 操作状态：'success' 或 'error'
	results: results,          	// 查询结果集（成功时，不同数据库结果不同）
	config: node-config,      	// 节点配置信息
	error: NaN,               	// 错误信息（失败时）
	yonsuite_access_token: "" 	// YonSuite 访问令牌（成功时）
	signature: signature,		// 签名
}
	</pre>
	<h5>注意事项：</h5>
	<ul>
		<li>目前仅支持查询操作，不支持插入、更新和删除操作</li>
		<li>数据库连接信息需正确配置，否则会导致连接失败</li>
		<li>YonSuite API 配置需正确填写，以确保能够成功获取访问令牌</li>
		<li>查询语句需符合所选数据库的语法规范</li>
	</ul>
	<p>&copy; 2025 上海企通数字科技有限公司</p> -->